11

 

 

 

Статьи

-
Понидилок Андрей

Создание карт в играх

Карта в игре является одним из важных элементов. Но для новичков, порой, созание карты является невыполнимой задачей. Я надеюсь, что данная статья поможет разобратся в самом простом способе создания карт при помощи тайлов (маленьких картинок из которых составляется карта)

Для начала запустим наш любимый Delphi и создадим новый проект.
Затем нам надо создать новый тип для карты и объявить этот тип в переменных, для чего пишем:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

type TMap=record // Наш новый тип для карты TMap
Land:integer;
// Указатель на номер спрайта земли
Blok:boolean;
// Является ли этот квадрат проходимым
end;


var
Form1: TForm1;
Map:array[1..30, 1..30] of TMap; // Сама карта размером 30х30 тайлов

implementation

{$R *.DFM}

end.

Теперь нам нужны сами тайлы и место, где они будут храниться.
Для этого надо:
1. Сохранить эту картинку в формате *.bmp

2. На форму поместить компонент ImageList
3. В свойствах этого компонента написать следующие значения:
Height = 32 и Widht = 32
4. Щелкнуть два раза крысой на компоненте ImageList и нажать "Add..."
5. Выбрать в диалоговом окне нашу картинку и нажать "Открыть"
6. Появится окошко с надьписью на английсом, вроде "Ваша картинка не влазит в ИмаджеЛист. Рзделить ее на 20 картинок ? " Нажимаем "Yes"
7. Наша картинка уже находится в ImageList, но есть один касяк: на каждой картинке есть белые точки - это прозрачный цвет по умолчанию. Для того чтобы исправить этот глюк надо выделить все 20 картинок и в списке под названием
Transparent Color выбрать
clNone
8. Нажимаем "ОК"
9. На форму помещаем компонент Image и в свойстве Align ставим alClient

Теперь у нас все готово для рисования карты.

Теперь в событии OnCreate нашей формы пишем:

procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
x,y:integer;
r:integer;

begin
x:=0;
y:=0;
randomize;
for i:=1 to 30 do
for j:=1 to 30 do
begin
r:= random(20);
if r>=15 then begin
map[i,j].blok:=False;
end;
map[i,j].land:=r;
ImageList1.draw(Image1.Canvas,x,y,MAP[i,j].land);
x:=x+32;
if x>=960 then
begin
x:=0;
y:=y+32;
end;
end;

end;

Все, карта у нас готова! Легко и просто. Для наглядности скачайте мой пример:
>>>
CreateMap.rar <<<

-









 
 

Copyright © Pascal 2000 - 2002
Дизайн: Понидилок Андрей

Hosted by uCoz